package com.wing.cabinet.model.response;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.wing.cabinet.model.entity.AuthorityManage;
import com.wing.mybatis.common.BaseEntity;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 权限管理表VO
 *
 * @author
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class AuthorityManageVO extends BaseEntity {

    /**
     * ID
     */
    private Long id;

    /**
     * 创建时间
     */
    @JsonFormat(timezone = "GMT+8" , pattern = "yyyy-MM-dd HH:mm:ss" )
    private LocalDateTime createTime;

    /**
     * 创建者
     */
    private Long creator;

    /**
     * 修改者
     */
    private Long modifier;

    /**
     * 创建人
     */
    private String creatorName;

    /**
     * 修改人
     */
    private String modifierName;

    /**
     * 权限组名称
     */
    private String name;

    /**
     * 授信方式
     */
    private AuthorityManage.CreditWay creditWay;

    /**
    * 授信方式描述
    */
    @TableField(exist = false)
    private String creditWayDesc;

    public String getCreditWayDesc() {
        return creditWay.getDesc();
    }

    /**
     * 授信额度
     */
    private BigDecimal lineOfCredit;

    /**
     * 额度评估周期
     */
    private AuthorityManage.LineEvaluatePeriod lineEvaluatePeriod;

    /**
    * 额度评估周期描述
    */
    @TableField(exist = false)
    private String lineEvaluatePeriodDesc;

    public String getLineEvaluatePeriodDesc() {
        return lineEvaluatePeriod.getDesc();
    }

    /**
     * 是否限制物料
     */
    private AuthorityManage.AstrictMaterial astrictMaterial;

    /**
    * 是否限制物料描述
    */
    @TableField(exist = false)
    private String astrictMaterialDesc;

    public String getAstrictMaterialDesc() {
        return astrictMaterial.getDesc();
    }

    /**
     * 可领物资分类id
     */
    private String materialId;

    /**
     * 可领物资分类名
     */
    private String materialName;

    /**
     * 刀具柜Id
     */
    private String cabinetId;

    /**
     * 人员数量
     */
    private Long quantity;

    /**
     * 状态  0正常  1停用
     */
    private Long status;

    /**
     * 刀具柜编码
     */
    private String cabinetCode;

    /**
     * 授信类型
     */
    private AuthorityManage.CreditType creditType;

    /**
     * 授信类型描述
     */
    @TableField(exist = false)
    private String creditTypeDesc;

    public String getCreditTypeDesc() {
        return creditType == null ? null : creditType.getDesc();
    }

    /**
     * 授信数量
     */
    private Integer authorizedQuantity;
    /**
     * 限制方式
     */
    private AuthorityManage.RestrictWay restrictWay;

    /**
     * 限制方式描述
     */
    @TableField(exist = false)
    private String restrictWayDesc;

    public String getRestrictWayDesc() {
        return restrictWay == null ? null : restrictWay.getDesc();
    }
    /**
     * 数量未归还阈值
     */
    private Integer quantityThreshold;
    /**
     * 金额未归还阈值
     */
    private BigDecimal moneyThreshold;
    /**
     * 实际授信额度
     */
    private BigDecimal practicalLineOfCredit;
    /**
     * 超额预警审核人
     */
    private Long excessAuditor;
    /**
     * 领用复审额度
     */
    private BigDecimal recheckAmount;
    /**
     * 复审额度审核人
     */
    private Long recheckAmountAuditor;
    /**
     * 超额预警是否开启 0开启 1关闭
     */
    private Integer excessStatus;

    private String email;

    /**
     * 整体授信数量
     */
    private Integer creditQuantity;

    /**
     * 整体授信金额
     */
    private BigDecimal creditAmount;

    /**
     * 实际授信数量
     */
    private Integer practicalCreditQuantity;

    /**
     * 单个物料默认限制状态: 0 限制  1不限制
     */
    private Integer authotizedStatus;

}
